package com.wejoy.video.middle.station.data.vo.api;

import java.util.List;

/**
 * @Author miracle_j
 * Create by 2024/4/17 2:55 PM
 */
public class BusinessPointConfigVO {

    /**
     * config : {"triggerTime":10000,"endDelayTime":10000,"callbackInterval":10000,"confidence":0.6,"extractFrameInterval":10000,"inArea":true,"effectiveTime":[{"beginTime":"00:00:00","endTime":"01:00:00","dayOfWeek":1}]}
     * pointIds : [10000001]
     * isCustomConfig : true
     * analysisStatus : ongoing
     */

    /**
     * 算法能力的配置信息
     */
    private ConfigBean config;
    /**
     * 是否是自定义配置
     */
    private boolean isCustomConfig;
    /**
     * 该点位进行 AI 分析的状态：
     *
     * ongoing: 正在进行 AI 分析
     * closed: 未进行 AI 分析
     */
    private String analysisStatus;
    /**
     * 点位id列表
     */
    private List<Integer> pointIds;

    public ConfigBean getConfig() {
        return config;
    }

    public void setConfig(ConfigBean config) {
        this.config = config;
    }

    public boolean isIsCustomConfig() {
        return isCustomConfig;
    }

    public void setIsCustomConfig(boolean isCustomConfig) {
        this.isCustomConfig = isCustomConfig;
    }

    public String getAnalysisStatus() {
        return analysisStatus;
    }

    public void setAnalysisStatus(String analysisStatus) {
        this.analysisStatus = analysisStatus;
    }

    public List<Integer> getPointIds() {
        return pointIds;
    }

    public void setPointIds(List<Integer> pointIds) {
        this.pointIds = pointIds;
    }

    public static class ConfigBean {
        /**
         * triggerTime : 10000
         * endDelayTime : 10000
         * callbackInterval : 10000
         * confidence : 0.6
         * extractFrameInterval : 10000
         * inArea : true
         * effectiveTime : [{"beginTime":"00:00:00","endTime":"01:00:00","dayOfWeek":1}]
         */

        /**
         * 延迟告警，单位毫秒
         */
        private int triggerTime;
        /**
         * 延迟结束，单位毫秒
         */
        private int endDelayTime;
        /**
         * 回调频率，单位毫秒
         */
        private int callbackInterval;
        /**
         * 置信度，取值 0 到 1
         */
        private double confidence;
        /**
         * 提取帧间隔，单位毫秒
         */
        private int extractFrameInterval;
        /**
         * boolean
         * 区域反选，取值 true 或者 false
         */
        private boolean inArea;
        private List<EffectiveTimeBean> effectiveTime;

        public int getTriggerTime() {
            return triggerTime;
        }

        public void setTriggerTime(int triggerTime) {
            this.triggerTime = triggerTime;
        }

        public int getEndDelayTime() {
            return endDelayTime;
        }

        public void setEndDelayTime(int endDelayTime) {
            this.endDelayTime = endDelayTime;
        }

        public int getCallbackInterval() {
            return callbackInterval;
        }

        public void setCallbackInterval(int callbackInterval) {
            this.callbackInterval = callbackInterval;
        }

        public double getConfidence() {
            return confidence;
        }

        public void setConfidence(double confidence) {
            this.confidence = confidence;
        }

        public int getExtractFrameInterval() {
            return extractFrameInterval;
        }

        public void setExtractFrameInterval(int extractFrameInterval) {
            this.extractFrameInterval = extractFrameInterval;
        }

        public boolean isInArea() {
            return inArea;
        }

        public void setInArea(boolean inArea) {
            this.inArea = inArea;
        }

        public List<EffectiveTimeBean> getEffectiveTime() {
            return effectiveTime;
        }

        public void setEffectiveTime(List<EffectiveTimeBean> effectiveTime) {
            this.effectiveTime = effectiveTime;
        }

        public static class EffectiveTimeBean {
            /**
             * beginTime : 00:00:00
             * endTime : 01:00:00
             * dayOfWeek : 1
             */
            /**
             * 开始时间
             */
            private String beginTime;
            /**
             * 结束时间
             */
            private String endTime;
            /**
             *
             * number <int64>
             * 星期几，取值是 1-7
             */
            private int dayOfWeek;

            public String getBeginTime() {
                return beginTime;
            }

            public void setBeginTime(String beginTime) {
                this.beginTime = beginTime;
            }

            public String getEndTime() {
                return endTime;
            }

            public void setEndTime(String endTime) {
                this.endTime = endTime;
            }

            public int getDayOfWeek() {
                return dayOfWeek;
            }

            public void setDayOfWeek(int dayOfWeek) {
                this.dayOfWeek = dayOfWeek;
            }
        }
    }
}
